package homework.six;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class UserDao {

    // 数据库连接工具类实例
    private static DbUntil dbUntil = new DbUntil();
    private Connection connection = null;

    /**
     * 构造方法
     *
     * @throws SQLException           如果数据库连接失败
     * @throws ClassNotFoundException 如果找不到 JDBC 驱动类
     */
    public UserDao() throws SQLException, ClassNotFoundException {
        connection = dbUntil.getCon();
    }

    /**
     * 根据用户名和密码查找用户
     *
     * @param username 用户名
     * @param password 密码
     * @return 如果找到用户则返回 User 对象，否则返回 null
     * @throws SQLException 如果执行 SQL 语句时发生错误
     */
    public User findUser(String username, String password) throws SQLException {
        // 4. 编写 SQL 语句
        String sql = "select * from users where username = ? and password = ?";

        // 5. 执行 SQL 语句
        PreparedStatement preparedStatement = connection.prepareStatement(sql);

        // 5.1 给问号赋值
        preparedStatement.setString(1, username);
        preparedStatement.setString(2, password);

        // 查询是否有结果的 ResultSet，接收查询语句查询出来的结果
        ResultSet resultSet = preparedStatement.executeQuery();

        User user = null; // 初始化为 null

        // 如果有数据，则创建 User 对象并设置属性
        if (resultSet.next()) {
            int id = resultSet.getInt("id");
            String name = resultSet.getString("username");
            String pwd = resultSet.getString("password");

            user = new User(id, name, pwd);
        }

        // 关闭资源（按打开的逆序关闭）
        resultSet.close();
        preparedStatement.close();

        return user;
    }
}
